import wechatConfig from '@/utils/jweixin'
import { WEIXIN_UNLOGIN_LIST, NO_WECHAT_CONFIG } from '@/config'
import { mapMutations } from 'vuex'

export default {
  data() {
    return {
          
    }
  },
  onLaunch() {
    // 根据项目判断是否需要做微信授权等操作
    if (getApp().globalData.isWeixinConfig && getApp().globalData.isWeixinBrowser) {
      const { currentRoute } = this.$router
      const { path } = currentRoute
      // 路由模块设置不需要微信授权
      if (NO_WECHAT_CONFIG.includes(path)) {
        return
      }
      // 路由模块设置不需要静默登陆
      if (WEIXIN_UNLOGIN_LIST.includes(path)) {
        this.getOpenIdByCode()
      } else {
        this.getUserInfoByCode()
      }
    }

    // 针对h5页面刷新问题 重新赋值登陆状态
    if (uni.getStorageSync('tokenid')) {
      const loginData = uni.getStorageSync('userCenterData') || '{}'
      this.login(JSON.parse(loginData))
    }
  },
  created() {
    
  },
  methods: {
    ...mapMutations(['login']),
    // 微信静默登陆
    getUserInfoByCode() {
      try {
        wechatConfig.getUserInfoByCode(this).then((res) => {
          const { openId, wxUserVO, userNo } = res
          // 全局设置微信授权信息
          if (openId) {
            getApp().globalData.openId = openId
            getApp().globalData.wxUserInfo = wxUserVO
          }
          
          // 提供一个页面第一次进入，监听是否登陆方法
          if (userNo) {
            console.log('logined')
            this.login(res)
            uni.$emit('onLogin', {
              data: {
                onLogin: true,
                ...res,
              },
            })
          }
          // 提供一个页面第一次进入，监听是否开发微信sdk config
          uni.$emit('readyWeixinConfigInit', {
            data: res,
          })
        }, (e) => {
          // 用户静默登陆失败
          uni.$emit('onLogin', {
            data: {
              onLogin: false,
            },
          })
          uni.$emit('readyWeixinConfigInit', {
            data: e,
          })
        })
      } catch (e) {
        console.log(e)
      }
    },
    // 页面模块 禁止微信静默登陆 仅获取当前用户openid
    getOpenIdByCode() {
      try {
        wechatConfig.getOpenIdByCode(this).then((res) => {
          const { openid } = res
          if (openid) {
            getApp().globalData.openId = openid
            getApp().globalData.wxUserInfo = res
          }
          uni.$emit('readyWeixinConfigInit', {
            data: res,
          })
        }, (errer) => {
          console.warn(errer)
        })
      } catch (e) {
        console.log(e)
      }
    },
  },
}